package util.components;




import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.DocumentFilter;

import util.filters.MaxDigitsDocumentFilter;
import util.filters.StartsWithZeroMaxDigitsDocumentFilter;


/**
 * Komponenta koja sluzi za unos tacno odredjenog broja cifara, ali i jednako ili manje od toga
 * Pri tome se moze specificirti da li mora da pocinje sa nulom
 * Recimo PTT ili PIB ne mogu pocinjati sa nulom, a moraju imati tacno definisan broj cifara
 * @author Renata
 *
 */
@SuppressWarnings("serial")
public class JDigitsTextField extends JTextField{
	/**
	 * Ukupan broj cifara 
	 */
	int totalDigits;
	boolean canHaveLessDigits;

	/**
	 * 
	 * @param duzina Ukupna duzina
	 * @param totalDigits Maksimalni broj cifara
	 * @param canHaveLess Da li moze imati i manje cifara
	 * @param canStartWithZero Da li moze poceti sa nulom
	 */
	public JDigitsTextField(int duzina, int totalDigits, boolean canHaveLess,boolean canStartWithZero){
		super(duzina);
		this.totalDigits=totalDigits;
		this.canHaveLessDigits=canHaveLess;
		AbstractDocument doc = (AbstractDocument)getDocument();
		DocumentFilter filter;
		if (canStartWithZero){
			filter=new MaxDigitsDocumentFilter();;
			((MaxDigitsDocumentFilter) filter).setMaxLength(totalDigits);
		}
		else{
			filter=new StartsWithZeroMaxDigitsDocumentFilter();
			((StartsWithZeroMaxDigitsDocumentFilter) filter).setMaxLength(totalDigits);
		}
		doc.setDocumentFilter(filter);
	}
	/**
	 * Odredjuje da li je validan sadrzaj polja 
	 * @return
	 */
	public boolean isEditValid(){
		if (canHaveLessDigits)
			return getText().length()>0;
		return getText().length()==totalDigits;
	}
}
